package com.whg.demo.controller;

import com.whg.demo.model.JsonData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * @Author whg
 * @create 2022/11/24 11:07
 * @description：
 */
@Controller
@RequestMapping("/file")
public class FileController {

    @Value("${upload.filepath}")
    private String filepath;

    /**
     * thymeleaf测试用例
     * thymeleaf依赖包 默认去templates目录下寻找html文件，
     * 如果没有thymeleaf依赖包 则不会去找resources下的文件，认定return的是url路径
     * @return
     */
    @GetMapping("/index")
    public Object index(){
        return "index";
        //return "/file/index2";
    }

    @GetMapping("/index2")
    @ResponseBody
    public Object index2(){
        return "index2";
    }

    @PostMapping("/upload")
    @ResponseBody
    public JsonData upload(@RequestParam("head_img") MultipartFile file,@RequestParam("name") String name){

        //判断图片是否为空
        if(file.isEmpty()){
            return JsonData.buildError("上传的图片不能为空");
        }
        //图片大小判断
        if(file.getSize() > 10*1024*1024){
            return JsonData.buildError("上传的文件太大，最大不能超过"+10*1024*1024+"KB");
        }
        //用户名
        System.out.println("用户名：" + name);
        //获取文件名
        String fileName = file.getOriginalFilename();
        System.out.println("上传的文件名为：" + fileName);

        //获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        System.out.println("文件的后缀名：" + suffixName);

        //文件上传后的名称
        fileName = UUID.randomUUID() + suffixName;
        System.out.println("文件上传后的名称：" + fileName);

        //文件保存路径
        /*String property = System.getProperty("user.dir");
        String filePath = property + "/src/main/resources/static/images/";*/

        File dest = new File(filepath + fileName);

        try{
            file.transferTo(dest);
            return JsonData.buildSuccess(fileName);
        }catch (IllegalStateException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
        return JsonData.buildError("fail to save",-1);


    }
}
